package br.org.acessobrasil.portal.persistencia;

import java.util.List;

import javax.persistence.Query;

import br.org.acessobrasil.portal.modelo.LogBusca;
import br.org.acessobrasil.portal.modelo.RelatorioBusca;

public class LogBuscaDao extends SuperDao<LogBusca> {

	private static LogBuscaDao instance = null;
	
	public LogBuscaDao() {
		instance = this;
	}
	
	public static LogBuscaDao getInstance() {
		return instance;
	}
	
	@Override
	public LogBusca select(Long id) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * Lista as ultimas buscas
	 * @param maxResults
	 * @return ultimas x buscas
	 */
	public List<LogBusca> listarUltimas(int maxResults) {
		Query query = getEntityManager().createQuery("Select lb from LogBusca lb order by lb.id desc").setMaxResults(maxResults);
		return query.getResultList();
	}

	/**
	 * Cria o relatorio de busca
	 * @param relatorioBusca
	 */
	public void create(RelatorioBusca relatorioBusca) {
		getEntityManager().persist(relatorioBusca);
	}

	/**
	 * Relatorio atual
	 * @return o ultimo relatorio de busca
	 */
	public RelatorioBusca getRelatorioBusca() {
		Query query = getEntityManager().createQuery("Select rb from RelatorioBusca rb order by rb.id desc").setMaxResults(1);
		List<RelatorioBusca> listRelatorioBusca = query.getResultList();
		if(listRelatorioBusca.size()==0){
			RelatorioBusca relatorioBusca = new RelatorioBusca();
			relatorioBusca.setConteudo("");
			this.create(relatorioBusca);
			return relatorioBusca;
		}else{
			return listRelatorioBusca.get(0);
		}
	}

	public void update(RelatorioBusca rb) {
		getEntityManager().merge(rb);		
	}
}
